package com.booter.ws.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.tuckey.web.filters.urlrewrite.Conf;
import org.tuckey.web.filters.urlrewrite.UrlRewriteFilter;

import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import java.io.IOException;

/**
 * 1 利于搜索引擎的收入。通过对URL的一些优化，可以使搜索引擎更好的识别与收录网站的信息
 * 2 美化URL。去除比如*.do之类的后缀名、长长的参数串等，可以自己组织精简更能反映访问模块内容的UR
 * 3 提高安全性可。以有效的避免一些参数名、ID等完全暴露在用户面前，如果用户随便乱输的话，不符合规则的话直接会返回个404或错误页面，这比直接返回500或一大堆服务器错误信息要好的多
 */
@Configuration
public class UrlRewriteFilterConfig extends UrlRewriteFilter {

    @Value("classpath:/url-rewrite.xml")
    private Resource resource;

    @Override
    protected void loadUrlRewriter(FilterConfig filterConfig) throws ServletException {
        try {
            Conf conf = new Conf(filterConfig.getServletContext(),
                    resource.getInputStream(),
                    resource.getFilename(),
                    "rule-engine");
            checkConf(conf);
        } catch (IOException ex) {
            throw new ServletException("Unable to load URL rewrite configuration file from classpath:/url-rewrite.xml", ex);
        }
    }
}